import axios from "axios";
import NProgress from "nprogress";   //第三方包引入    做进度条
import 'nprogress/nprogress.css'   //样式引入    引了css样式就得下css加载器

// 创建axios实例
const request = axios.create({
    baseURL: "/api1",
    timeout: 10000
})

// 添加请求拦截器
request.interceptors.request.use(function (config) {
    // 在请求发送之前做一些事情

    // 添加一个请求进度条
    NProgress.start();
    
    return config;
}, function (error) {
    NProgress.done();   //不管在哪失败,进度条都要结束,不然进度条就会一直转圈圈
    // 对请求错误做些什么
    return Promise.reject(error);
});

// 添加响应拦截器
request.interceptors.response.use(function (response) {
    // 对响应数据执行操作
    NProgress.done();  //一有响应以后进度条结束

    // 只对符合我们成功逻辑的进行处理,否则都报异常
    if(response.data.code!==10000){
        return Promise.reject({
            message: response.data.msg   //因为catch那里要接收的是e.message，所以这里的参数要是个对象，属性值为message
        });
    }

    return response.data.data;
}, function (error) {
    // 对响应错误做点什么
    NProgress.done();        //不管在哪失败,进度条都要结束,不然进度条就会一直转圈圈
    return Promise.reject(error);
});

export default request;